---
title: 结构化分析设计
description: 只考数据流图,且只考顶层图和 0 层图
---

## 知识点

数据流图描述 <RedSpan>数据在系统中如何被传送或变换</RedSpan>，以及如何对数据流进行变换的功能或子功能，用于对功能建模。
<img src="https://wkq-img.oss-cn-chengdu.aliyuncs.com/20241025004842.png"/>
**数据流**: 由一组固定成分的数据组成，表示数据的流向。在 DFD 中，<RedSpan>数据的流向必须经过加工</RedSpan>

加工：描述了输入数据流到输出数据流之间的变换，数据流图中常见的三种错误如图所示：
* 加工 3.1.2 有输入但是没有输出。称之为 “黑洞”
* 加工 3.1.3 有输出但没有输入。称之为“奇迹”
* 加工 3.1.1 中输入不足以产生输出，我们称之为灰洞。

数据存储：用来存储数据

外部实体（外部主题）：是指存在于 <RedSpan>软件系统之外的</RedSpan>人员或组织，它指出系统所需数据的发源地（源）和系统所产生的数据的归宿地（宿）.

<img src="https://wkq-img.oss-cn-chengdu.aliyuncs.com/20241025215411.png"/>

### 多层数据流图

考试只考顶层图和 0 层图。
* 考点一：补充外部实体（看顶层图）
* 考点二：补充数据存储（数据存储在顶层图中是不会出现的）
* 靠点三：补充数据流（看零层图）

顶层图是系统作为一个整体与所有的外部实体进行交互，把这个整体进行进一步的划分（这个整体中包含了那些功能）得到 0 层图。再进一步分就会得到 1 层数据流图。

但是不管怎么划分，父图和子图都会保持数据流的平衡的，输入输出数据流必然都是一致的。
<img src="https://wkq-img.oss-cn-chengdu.aliyuncs.com/20241025222745.png"/>

<img src="https://wkq-img.oss-cn-chengdu.aliyuncs.com/20241025222802.png"/>
<img src="https://wkq-img.oss-cn-chengdu.aliyuncs.com/20241025223854.png"/>

### 数据流图的设计原则
* 数据守恒原则：对任何一个加工来说，其 <RedSpan>所有输出数据流中的数据必须能从该加工的输入流中直接获得</RedSpan>，或者说是通过该加工能产生的数据。
* 守恒加工原则： 对同一个加工来说，<RedSpan>输入与输出的名字必须不相同，即使它们的组成成分相同</RedSpan>。
* 对于每个加工，必须 <RedSpan>既有输入数据流，又有输出数据流</RedSpan>，且输入输出必须有关联。
* <RedSpan>外部实体与外部实体之间</RedSpan>不存在数据流
* <RedSpan>外部实体与数据存储之间</RedSpan>不存在数据流
* <RedSpan>数据存储与数据存储之间</RedSpan>不存在数据流
* 父图和子图的平衡原则：<RedSpan>子图的输入输出数据流同父图相应加工的输入输出数据流必须一致</RedSpan>，此即父图与子图的平衡。父图与子图之间的平衡原则不存在于单张图。

* <RedSpan>数据流与加工有关，且必须经过加工</RedSpan>。

### 数据字典 DD
据流图描述了系统的分解，但没有对图中的各成分进行说明。<RedSpan>数据字典就是为数据流图中的每个数据流、文件、加工，以及组成数据流或文件的数据项做出说明。</RedSpan>

数据字典有以下 4 类条目：<RedSpan>数据流、数据项、数据存储和基本加工</RedSpan>


| 符号           | 定义   | 举例及说明                       |
|--------------|------|-----------------------------|
| =            | 被定义为 |                             |
| +            | 与    | x = a+b, 表示 x 由 a 和 b 组成    |
| `[...\|...]` | 或    | x=`[a\|b]`,表示 x 由 a 或 b 组成  |
| `{......}`   | 重复   | x=`{a}`, 表示 x 由 0 各或多个 a 组成 |



加工逻辑也称为“小说明”。常用的加工逻辑描述方法有 <RedSpan>结构化语言（伪代码）、判定表和判定树 3 种。</RedSpan>
:::tip
数据字典并不会去说明外部实体，认为外部实体不是系统内部的东西。
:::
## 解题技巧
数据流图的 <RedSpan>考试形式非常固定，第一小题补充外部实体，第二小题补充数据存储，第三题补充缺失数据流</RedSpan>，第四小题考察简单概念。都不算难，以题目描述和数据流图为主，答案都在题目描述里，<RedSpan>更像阅读理解题</RedSpan>，技巧如下。

1. 补充外部实体：外部实体就是与系统进行交互的其它实体，可以是大型系统、公司部门、相关人员等。<RedSpan>外部实体会与系统进行交互</RedSpan>，反映在数据流图中就是一个 <RedSpan>事件流，依据事件的名称结合题目描述可以轻易得到答案</RedSpan>。

2. 补充数据存储：数据存储出现在 <RedSpan>0层数据流图中，反应系统内部数据的存储</RedSpan>，可以直接根据数据流图中 <RedSpan>数据存储的输入数据流和输出数据流判断</RedSpan>该数据存储的信息得到答案，但注意 <RedSpan>要使用题目说明的数据存储名词</RedSpan>作为答案。

3. 补充缺失数据流：**<RedSpan>详细阅读题目描述</RedSpan>**，依据题目描述 <RedSpan>对涉及的数据流图进行一一核对</RedSpan>，这是 <RedSpan>最为简单直接的方法</RedSpan>，因为即使开始就去考虑数据守恒、父图子图平衡等原则，最终还是要根据题目描述核对，不如一开始就直接核对。

4. 简单概念：题型不固定，一般只有 2-3 分，都是比较简单的判断。


### 常见问题
Q: 补充数据存储时，题目中没有具体存储名称怎么办？
A： 此时可依据数据流图中数据存储的输入输出数据流自行起名。

Q：补充数据流时，该写多少条？
A：一般按分写，几分就写几条。

Q：觉得要补充的数据流很多，比分数更多怎么办？
A：可以多写，这个是按点给分的，多写不会扣分，但要注意不能太过分。

Q：总觉得数据流把握不准，跟答案有出入怎么办？
A：首先要注意，软考官方不公布标准答案，所有答案都是考试老师校对的，可能会不全面；其次，部分真题本身也不太严谨，有二义性。因此不用太纠结，掌握解题方法，多刷题即可。


需要拿到 12 分以上

## 往年真题
### 真题一
<img src="https://wkq-img.oss-cn-chengdu.aliyuncs.com/20241026104514.png"/>
<img src="https://wkq-img.oss-cn-chengdu.aliyuncs.com/20241026104618.png"/>
<img src="https://wkq-img.oss-cn-chengdu.aliyuncs.com/20241026104546.png"/>
<img src="https://wkq-img.oss-cn-chengdu.aliyuncs.com/20241026114358.png"/>

### 真题二
<img src="https://wkq-img.oss-cn-chengdu.aliyuncs.com/20241026114527.png"/>
<img src="https://wkq-img.oss-cn-chengdu.aliyuncs.com/20241026114544.png"/>
<img src="https://wkq-img.oss-cn-chengdu.aliyuncs.com/20241026114601.png"/>
<img src="https://wkq-img.oss-cn-chengdu.aliyuncs.com/20241026121233.png"/>